A storage system is a special-purpose processing system used to store and retrieve data on behalf of one or more client processing systems (“clients”). A storage system can be used for many different purposes, such as, to provide multiple users with access to shared data or to backup mission critical data.
A file server is an example of a storage system. A file server operates on behalf of one or more clients to store and manage shared files in a set of mass storage devices, such as magnetic or optical storage based disks or tapes. The mass storage devices may be organized into one or more volumes of Redundant Array of Inexpensive Disks (RAID). Another example of a storage system is a device which provides clients with block-level access to stored data, rather than file-level access, or a device which provides clients with both file-level access and block-level access.
A volume is a set of disks presented to an operating environment as a range of consecutively numbered logical blocks with disk-like storage and input/output semantics. In conventional storage systems, there is a fixed relationship between a volume and the disks that are associated with the volume. This fixed relationship means that each volume has full control over the disks that are associated with the volume. For example, only the volume associated with the disk can read and/or write to the disk. Unused space within the disks associated with the volume cannot be used by another volume. Thus, even if a volume is only using a fraction of the space on its associated disks, the unused space is reserved for the exclusive use of the volume.
Another feature of the fixed relationship between a volume and its associated disks, in conventional storage systems, is that the size of the volume is substantially determined by the capacity of the associated disks. This means that the size of the underlying physical storage dictates the size of the volume. If a user wants to increase the size of the conventional volume, she must add disks to the physical storage (e.g., add a RAID group).